1. Field of the Invention
This invention relates generally to Web browser history support, and more particularly to a method for providing history support in a stateless Web client environment.
2. Description of the Related Art
Conventionally, most Web browsers have a history support capability. The history support capability allows a user to navigate backward or forward to the location of a document, a file, or any other Internet resource, etc. that the user has previously visited. The Web browser provides history support by registering an Internet address of the Internet resource, called a Uniform Resource Locator (URL), and its associated content in the browser's “History Register” each time the user visits the resource. The “History Register” is typically implemented as a cache directory that contains a copy of the resource content so that when the user selects the “Back” or “Forward” button from the browser menu, no significant reloading of data needs to occur to re-display the content of the resource.
In some Web-based client systems, however, the browser's user interface is implemented using a stateless scripting language, e.g. Javascript, etc. These systems can provide a Javascript-based user interface in an attempt to minimize the client-server bandwidth utilization by supporting the capability to download dynamic content (e.g. folder lists, message lists, and message content) from a server to the client browser as Javascript objects. The Javascript objects are then transformed by a client-based Javascript program and output as Hyper Text Markup Language (HTML) code that can be rendered by the browser. Thus, every user action within the browser's user interface is handled by a Javascript engine which invokes a Javascript call that ultimately leads to the loading of content data from the server to the browser user interface. However, the Javascript engine is itself stateless—i.e. the entry point of the Javascript engine is an event that is triggered by a user selection and the exit point is the return of a handler function that was invoked by the Javascript engine to handle the user-triggered event. Because, the Javscript engine does not register prior events and the URL is embedded in the Javascript function call and therefore hidden from the browser, it is impossible to navigate backward or forward to the previously visited pages because the sequence of events is lost as a result of their being handled by the stateless Javascript engine. For example, in a stateless Web-based e-mail system, if a user selects the “Inbox” hyperlink, selects a message A from the inbox folder, selects the “Send” hyperlink, and selects a message B from the send folder, the user cannot then select the “Back” button from the browser menu bar to go back to the “Send” folder or to message A because the navigation sequence is lost.
In view of the forgoing, there is a need for an approach for providing history support that enhances usability and scalability in a stateless Web-based client system.